﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Windows.Controls;
using System.Windows.Shell;

namespace Host.Encriptacion
{
    /// <summary>
    /// Clase para leer y escribir BitArray's 
    /// </summary>
    class IO
    {
        public static ListBox salidaReferencia { get; set; }
       
        //constructor
        IO() { }

        /// <summary>
        /// Imprime los valores de los arreglos de bits en boleano
        /// </summary>
        /// <param name="entrada">valor del bitArray </param>
        /// <param name="largo">tamano de bloque</param>
        public static void ImprimeBitArrayBoleanos(IEnumerable entrada, int largo)
        {
            int i = largo;
            foreach (Object obj in entrada)
            {
                if (i <= 0)
                {
                    i = largo;
                    Console.WriteLine();
                }
                i--;
                Console.Write("{0,2}", obj);
            }
            Console.WriteLine();
        }

        /// <summary>
        /// Imprime los valores de los arreglos de bits en ceros y unos en un string
        /// </summary>
        /// <param name="entrada">valor del bitArray </param>
        /// <param name="largo">tamano de bloque</param>
        public static string BitArrayToString(IEnumerable entrada, int largo)
        {
            int i = largo;
            string texto = "";
            foreach (Object obj in entrada)
            {
                if (i <= 0)
                {
                    i = largo;
                    texto = texto + "\n";
                }
                i--;
                if ((bool)obj == true)
                    texto = texto + "1 ";
                else
                    texto = texto + "0 ";
            }
            texto = texto + "\n";
            return texto;
        }

        /// <summary>
        /// Imprime los valores de los arreglos de bytes en ASCII
        /// </summary>
        /// <param name="entrada">valor del arreglo de bytes (byte[])</param>
        public static void ImprimeByteASCII(IEnumerable entrada)
        {
            foreach (Byte b in entrada)
            {
                Console.Write("[{0}]", b);
            }
            Console.WriteLine();

        }

        /// <summary>
        /// Imprime en la salida de la ventana el paso actual
        /// </summary>
        /// <param name="paso">texto con los datos</param>
        public static void ImprimePasos(string paso)
        {
            salidaReferencia.Items.Add(paso);
        }

    }
}
